using System;
using System.Collections.Generic;
using System.Text;

namespace Krile.Kernel.Bridges
{
    public interface IPluginManager
    {
        /// <summary>
        /// Query type object from type string
        /// </summary>
        /// <param name="typeString">activate string</param>
        /// <returns>type object or null</returns>
        Type QueryType(string typeString);

        /// <summary>
        /// Lookup Registered Plugin
        /// </summary>
        /// <param name="id">Identification String</param>
        /// <returns>Instance or null</returns>
        Plugin.IPlugin Lookup(string id);

        /// <summary>
        /// Lookup Registered Service
        /// </summary>
        /// <param name="id">Identification String</param>
        /// <returns>Instance or null</returns>
        Data.Service LookupService(string id);

        /// <summary>
        /// Set inactivated plugin
        /// </summary>
        /// <param name="plugin">plugin instances</param>
        void InactivatePlugin(Plugin.IPlugin plugin);
    }
}